// 最大公约数为1的子序列数量
// 给你一个数组，返回有多少个子序列的最大公约数是1
// 结果可能很大对1000000007取模
// 测试链接 : https://www.luogu.com.cn/problem/CF803F
// 1 <= n <= 10^5
// 1 <= nums[i] <= 10^5
// 扩展问题
// 最大公约数为k的子序列数量
// 给定一个长度为n的正数数组nums，还有正数k
// 返回有多少子序列的最大公约数为k
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int MOD = 1000000007;
const int LIMIT = 100000;
long dp[LIMIT + 1];
long cnt[LIMIT + 1];
long pow2[LIMIT + 1];

inline int read()
{
    char ch = getchar();
    int x = 0, f = 1;
    while(ch < '0' || ch > '9')
    {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9')
    {
        x = 10 * x + ch - '0';
        ch = getchar();
    }
    return f * x;
}

void build()
{
    pow2[0] = 1;
    for(int i = 1; i <= LIMIT; ++i)
    {
        pow2[i] = (pow2[i - 1] * 2) % MOD;
    }
}

// 时间复杂度O(n * logn)
long compute()
{
    for(int i = LIMIT; i >= 1; --i)
    {
        long counts = 0;
        for(int j = i; j <= LIMIT; j += i)
        {
            counts = (counts + cnt[j]) % MOD;
        }
        dp[i] = (pow2[counts] - 1 + MOD) % MOD;
        for(int j = 2 * i; j <= LIMIT; j += i)
        {
            dp[i] = (dp[i] - dp[j] + MOD) % MOD;
        }
    }
    return dp[1];
}

int main()
{
    build();
    int n = read();
    for(int i = 1; i <= n; ++i) ++cnt[read()];
    printf("%ld\n", compute());

    return 0;
}